﻿////////////////////////////////////////////////////
//
//  ゲームの状態管理を行うクラス
//  作成日：2012/11/15
//  作成者：岩井賢司
//  履歴：2012/11/15　初版作成（岩井）
//
////////////////////////////////////////////////////

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Particle_Tackle
{
    /// <summary>
    /// ゲームの状態管理を行うクラスです。
    /// </summary>
    static class GameManager
    {

        /// <summary>
        /// ゲームの状態列挙
        /// </summary>
        public enum GAME_STATE
        {
            INIT,
            TITLE_LOADING,
            TITLE,
            GAME_LOADING,
            GAME,
            OPTION_LOADING,
            OPTION,
            RESULT_LOADING,
            RESULT
        };

        /// <summary>
        /// 現在のゲーム状態
        /// </summary>
        private static GAME_STATE gameState = GAME_STATE.INIT;

        /// <summary>
        /// ゲームの停止状態を管理する変数
        /// </summary>
        private static bool isPause = false;

        /// <summary>
        /// 初期化メソッド
        /// </summary>
        public static void Init()
        {
            gameState = GAME_STATE.INIT;
            isPause = false;
        }

        /// <summary>
        /// ゲーム状態変更メソッド
        /// </summary>
        /// <param name="state">変更する状態</param>
        public static void StateChange(GAME_STATE state)
        {
            gameState = state;
        }

        /// <summary>
        /// ポーズ状態を変更するメソッド
        /// </summary>
        /// <param name="pause"></param>
        public static void PauseChange(){
            isPause = !isPause;
        }

        /// <summary>
        /// ポーズ状態を取得するメソッド
        /// </summary>
        /// <returns></returns>
        public static bool getPauseStatus() {
            return isPause;
        }

        /// <summary>
        /// 更新処理メソッド
        /// </summary>
        public static void Update()
        {
            if (!isPause)
            {
                switch (gameState)
                {
                    case GAME_STATE.INIT:
                        break;
                    case GAME_STATE.TITLE_LOADING:
                        break;
                    case GAME_STATE.TITLE:
                        break;
                    case GAME_STATE.GAME_LOADING:
                        break;
                    case GAME_STATE.GAME:
                        break;
                    case GAME_STATE.OPTION_LOADING:
                        break;
                    case GAME_STATE.OPTION:
                        break;
                    case GAME_STATE.RESULT_LOADING:
                        break;
                    case GAME_STATE.RESULT:
                        break;
                }
            }
        }

        /// <summary>
        /// 描画処理メソッド
        /// </summary>
        public static void Draw()
        {
            switch (gameState)
            {
                case GAME_STATE.INIT:
                    break;
                case GAME_STATE.TITLE_LOADING:
                    break;
                case GAME_STATE.TITLE:
                    break;
                case GAME_STATE.GAME_LOADING:
                    break;
                case GAME_STATE.GAME:
                    break;
                case GAME_STATE.OPTION_LOADING:
                    break;
                case GAME_STATE.OPTION:
                    break;
                case GAME_STATE.RESULT_LOADING:
                    break;
                case GAME_STATE.RESULT:
                    break;
            }
        }
    }
}
